home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 23 / Amiga Format AFCD23 (Feb 1998, Issue 107).iso / -seriously_amiga- / shareware / programming / other / hunk / hoppers / amigalib.hop < prev    next >
Text File  |  1997-12-01  |  9KB  |  182 lines

  1. ;*************************************************************************
  2. ;** AmigaLib MUL/DIV/MOD                                                **
  3. ;** Contributor: L.Lucius                               Sept 23rd 1995  **
  4. ;** Modified for HOp:   Thomas Richter  (thor)          Nov  1st  1997  **
  5. ;** Function:    Modify 68000 math routines to use 68020+ instructions. **
  6. ;*************************************************************************
  7.  
  8. #match
  9. #code
  10. 0C82 0000 FFFF                  ;   CMPI.L      #0000FFFF,D2
  11. 6E18                            ;   BGT.B       0020
  12. 3241                            ;   MOVEA.W     D1,A1
  13. 4241                            ;   CLR.W       D1
  14. 4841                            ;   SWAP        D1
  15. 82C2                            ;   DIVU.W      D2,D1
  16. 2001                            ;   MOVE.L      D1,D0
  17. 4841                            ;   SWAP        D1
  18. 3009                            ;   MOVE.W      A1,D0
  19. 80C2                            ;   DIVU.W      D2,D0
  20. 3200                            ;   MOVE.W      D0,D1
  21. 4240                            ;   CLR.W       D0
  22. 4840                            ;   SWAP        D0
  23. 4E75                            ;   RTS
  24. 2001                            ;   MOVE.L      D1,D0
  25. 4240                            ;   CLR.W       D0
  26. 4840                            ;   SWAP        D0
  27. 4841                            ;   SWAP        D1
  28. 4241                            ;   CLR.W       D1
  29. 2242                            ;   MOVEA.L     D2,A1
  30. 740F                            ;   MOVEQ       #0F,D2
  31. D281                            ;   ADD.L       D1,D1
  32. D180                            ;   ADDX.L      D0,D0
  33. B3C0                            ;   CMPA.L      D0,A1
  34. 6E04                            ;   BGT.B       003A
  35. 9089                            ;   SUB.L       A1,D0
  36. 5241                            ;   ADDQ.W      #1,D1
  37. 51CA FFF2                       ;   DBF         D2,002E
  38. 4E75                            ;   RTS
  39. 2F02                            ;   MOVE.L      D2,-(A7)
  40. 2400                            ;   MOVE.L      D0,D2
  41. C4C1                            ;   MULU.W      D1,D2
  42. 2042                            ;   MOVEA.L     D2,A0
  43. 2400                            ;   MOVE.L      D0,D2
  44. 4842                            ;   SWAP        D2
  45. C4C1                            ;   MULU.W      D1,D2
  46. 4841                            ;   SWAP        D1
  47. C0C1                            ;   MULU.W      D1,D0
  48. D082                            ;   ADD.L       D2,D0
  49. 4840                            ;   SWAP        D0
  50. 4240                            ;   CLR.W       D0
  51. D1C0                            ;   ADDA.L      D0,A0
  52. 2008                            ;   MOVE.L      A0,D0
  53. 241F                            ;   MOVE.L      (A7)+,D2
  54. 4E75                            ;   RTS
  55. 2F02                            ;   MOVE.L      D2,-(A7)
  56. 2401                            ;   MOVE.L      D1,D2
  57. 2200                            ;   MOVE.L      D0,D1
  58. 6198                            ;   BSR.B       0000
  59. 241F                            ;   MOVE.L      (A7)+,D2
  60. 4E75                            ;   RTS
  61. 2F02                            ;   MOVE.L      D2,-(A7)
  62. 2401                            ;   MOVE.L      D1,D2
  63. 2200                            ;   MOVE.L      D0,D1
  64. 618C                            ;   BSR.B       0000
  65. 2001                            ;   MOVE.L      D1,D0
  66. 241F                            ;   MOVE.L      (A7)+,D2
  67. 4E75                            ;   RTS
  68. 2F02                            ;   MOVE.L      D2,-(A7)
  69. 2401                            ;   MOVE.L      D1,D2
  70. 6C02                            ;   BGE.B       0082
  71. 4482                            ;   NEG.L       D2
  72. 2200                            ;   MOVE.L      D0,D1
  73. 7000                            ;   MOVEQ       #00,D0
  74. 4A81                            ;   TST.L       D1
  75. 6C04                            ;   BGE.B       008E
  76. 4481                            ;   NEG.L       D1
  77. 4680                            ;   NOT.L       D0
  78. 2040                            ;   MOVEA.L     D0,A0
  79. 6100 FF6E                       ;   BSR.W       0000
  80. 3408                            ;   MOVE.W      A0,D2
  81. 6702                            ;   BEQ.B       009A
  82. 4480                            ;   NEG.L       D0
  83. 241F                            ;   MOVE.L      (A7)+,D2
  84. 4E75                            ;   RTS
  85. 2F02                            ;   MOVE.L      D2,-(A7)
  86. 2040                            ;   MOVEA.L     D0,A0
  87. 7000                            ;   MOVEQ       #00,D0
  88. 2401                            ;   MOVE.L      D1,D2
  89. 6C04                            ;   BGE.B       00AC
  90. 4482                            ;   NEG.L       D2
  91. 4680                            ;   NOT.L       D0
  92. 2208                            ;   MOVE.L      A0,D1
  93. 6C04                            ;   BGE.B       00B4
  94. 4481                            ;   NEG.L       D1
  95. 4680                            ;   NOT.L       D0
  96. 2040                            ;   MOVEA.L     D0,A0
  97. 6100 FF48                       ;   BSR.W       0000
  98. 2408                            ;   MOVE.L      A0,D2
  99. 6702                            ;   BEQ.B       00C0
  100. 4481                            ;   NEG.L       D1
  101. 2001                            ;   MOVE.L      D1,D0
  102. 241F                            ;   MOVE.L      (A7)+,D2
  103. 4E75                            ;   RTS
  104. ;
  105. ;
  106. #replace
  107. 0C82 0000 FFFF                  ;   CMPI.L      #0000FFFF,D2
  108. 6E18                            ;   BGT.B       0020
  109. 3241                            ;   MOVEA.W     D1,A1
  110. 4241                            ;   CLR.W       D1
  111. 4841                            ;   SWAP        D1
  112. 82C2                            ;   DIVU.W      D2,D1
  113. 2001                            ;   MOVE.L      D1,D0
  114. 4841                            ;   SWAP        D1
  115. 3009                            ;   MOVE.W      A1,D0
  116. 80C2                            ;   DIVU.W      D2,D0
  117. 3200                            ;   MOVE.W      D0,D1
  118. 4240                            ;   CLR.W       D0
  119. 4840                            ;   SWAP        D0
  120. 4E75                            ;   RTS
  121. 2001                            ;   MOVE.L      D1,D0
  122. 4240                            ;   CLR.W       D0
  123. 4840                            ;   SWAP        D0
  124. 4841                            ;   SWAP        D1
  125. 4241                            ;   CLR.W       D1
  126. 2242                            ;   MOVEA.L     D2,A1
  127. 740F                            ;   MOVEQ       #0F,D2
  128. D281                            ;   ADD.L       D1,D1
  129. D180                            ;   ADDX.L      D0,D0
  130. B3C0                            ;   CMPA.L      D0,A1
  131. 6E04                            ;   BGT.B       003A
  132. 9089                            ;   SUB.L       A1,D0
  133. 5241                            ;   ADDQ.W      #1,D1
  134. 51CA FFF2                       ;   DBF         D2,002E
  135. 4E75                            ;   RTS
  136. 4C01 0000                       ;   MULU.L      D1,D0
  137. 4E75                            ;   RTS
  138. 2042                            ;   MOVEA.L     D2,A0
  139. 2400                            ;   MOVE.L      D0,D2
  140. 4842                            ;   SWAP        D2
  141. C4C1                            ;   MULU.W      D1,D2
  142. 4841                            ;   SWAP        D1
  143. C0C1                            ;   MULU.W      D1,D0
  144. D082                            ;   ADD.L       D2,D0
  145. 4840                            ;   SWAP        D0
  146. 4240                            ;   CLR.W       D0
  147. D1C0                            ;   ADDA.L      D0,A0
  148. 2008                            ;   MOVE.L      A0,D0
  149. 241F                            ;   MOVE.L      (A7)+,D2
  150. 4E75                            ;   RTS
  151. 4C41 0001                       ;   DIVUL.L     D1,D1:D0
  152. C340                            ;   EXG         D1,D0
  153. 4E75                            ;   RTS
  154. 241F                            ;   MOVE.L      (A7)+,D2
  155. 4E75                            ;   RTS
  156. 4C41 0001                       ;   DIVUL.L     D1,D1:D0
  157. 4E75                            ;   RTS
  158. 618C                            ;   BSR.B       0000
  159. 2001                            ;   MOVE.L      D1,D0
  160. 241F                            ;   MOVE.L      (A7)+,D2
  161. 4E75                            ;   RTS
  162. 4C41 0801                       ;   DIVSL.L     D1,D1:D0
  163. C340                            ;   EXG         D1,D0
  164. 4E75                            ;   RTS
  165. 2200                            ;   MOVE.L      D0,D1
  166. 7000                            ;   MOVEQ       #00,D0
  167. 4A81                            ;   TST.L       D1
  168. 6C04                            ;   BGE.B       008E
  169. 4481                            ;   NEG.L       D1
  170. 4680                            ;   NOT.L       D0
  171. 2040                            ;   MOVEA.L     D0,A0
  172. 6100 FF6E                       ;   BSR.W       0000
  173. 3408                            ;   MOVE.W      A0,D2
  174. 6702                            ;   BEQ.B       009A
  175. 4480                            ;   NEG.L       D0
  176. 241F                            ;   MOVE.L      (A7)+,D2
  177. 4E75                            ;   RTS
  178. 4C41 0801                       ;   DIVSL.L     D1,D1:D0
  179. 4E75                            ;   RTS
  180. #end
  181.  
  182.